package com.ruoyi.biz.card.service.impl;

import com.google.zxing.WriterException;
import com.ruoyi.biz.card.domain.CardInfo;
import com.ruoyi.biz.card.domain.vo.CardInfoVo;
import com.ruoyi.biz.card.mapper.CardInfoMapper;
import com.ruoyi.biz.card.service.ICardInfoService;
import com.ruoyi.biz.card.utils.VCardUtils;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.util.List;

/**
 * 【请填写功能名称】Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-05-30
 */
@Service
public class CardInfoServiceImpl implements ICardInfoService
{
    @Autowired
    private CardInfoMapper cardInfoMapper;

    /**
     * 查询【请填写功能名称】
     * 
     * @param id 【请填写功能名称】主键
     * @return 【请填写功能名称】
     */
    @Override
    public CardInfo selectCardInfoById(Long id)
    {
        return cardInfoMapper.selectCardInfoById(id);
    }

    /**
     * 查询【请填写功能名称】列表
     * 
     * @param cardInfo 【请填写功能名称】
     * @return 【请填写功能名称】
     */
    @Override
    public List<CardInfo> selectCardInfoList(CardInfo cardInfo)
    {
        return cardInfoMapper.selectCardInfoList(cardInfo);
    }

    /**
     * 新增【请填写功能名称】
     * 
     * @param cardInfo 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int insertCardInfo(CardInfo cardInfo) {
        return cardInfoMapper.insertCardInfo(cardInfo);
    }

    /**
     * 修改【请填写功能名称】
     * 
     * @param cardInfo 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int updateCardInfo(CardInfo cardInfo)
    {
        return cardInfoMapper.updateCardInfo(cardInfo);
    }

    /**
     * 批量删除【请填写功能名称】
     * 
     * @param ids 需要删除的【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteCardInfoByIds(Long[] ids)
    {
        return cardInfoMapper.deleteCardInfoByIds(ids);
    }

    /**
     * 删除【请填写功能名称】信息
     * 
     * @param id 【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteCardInfoById(Long id)
    {
        return cardInfoMapper.deleteCardInfoById(id);
    }

     /**
     * @param id 【请填写功能名称】主键
     * @return 【请填写功能名称】
     */
    @Override
    public AjaxResult getCardInfo(Long id) {

        //  查询数据
        CardInfo cardInfo = cardInfoMapper.selectCardInfoById(id);

         if(cardInfo == null){
            return AjaxResult.warn("未找到该数据");
         }

        VCardUtils vCardUtils = new VCardUtils();

        String vcardString = null;
        try {
            vcardString = vCardUtils.generateVCardString(cardInfo);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String vcardQrBase64 = null;
        try {
            vcardQrBase64 = vCardUtils.generateVCardQrBase64(vcardString);
        } catch (WriterException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //  封装数据
        CardInfoVo cardInfoVo = new CardInfoVo();
        BeanUtils.copyProperties(cardInfo, cardInfoVo);
        cardInfoVo.setvCardQrBase64(vcardQrBase64);

        return AjaxResult.success().put("data", cardInfoVo);
    }
}
